This invention relates to personal computers designed with commercially available microprocessor chip sets. More particularly, the present invention relates to a personal computer in which the central microprocessor is controlled to execute programs in a normal high speed mode or to execute at a slow speed mode to achieve software compatibility with existing application programs which, because of their specific hardware dependency, cannot be run at the higher speed.
The introduction of the personal computer has resulted in a tremendous amount of application software programs written for both the professional and for the home entertainment market. These personal computers are designed around commercially available microprocessor chip sets which may include a plurality of microprocessors connected in an architecture which results in varying degrees of execution throughput rates.
A very popular microprocessor chip set widely used by personal computer manufacturers is the Intel Corporation 8088 microprocessor which has its particular instruction set. The same instruction set is also available in a different microprocessor from Intel, the 8086 microprocessor. The 8086 microprocessor has a substantially higher instruction execution cycle rate, almost twice as fast as the 8088. Available also from Intel is a coprocessor chip, the Intel 8087, which may be used either with the 8088 or the 8086 to achieve even higher execution throughput rates.
With the availability of a software compatible (i.e., executes the same instruction set) microprocessor, it is possible to upgrade a prior-art personal computer with higher execution speeds for some application programs written for the lower speed microprocessor chip set. While faster software compatible microprocessors are available, it is not possible, however, to simply substitute the faster microprocessor for the slower microprocessor and thereby produce a personal computer which executes at twice the speed all of the application programs written for the slower microprocessor.
Not all application programs written for the slower microprocessor are capable of running at faster microprocessor execution speeds, even though each instruction in the program is executed the same in both machines. The inability to run some programs at higher speeds results from the fact that programmers, when writing for the slower microprocessor, take advantage of the particular execution cycle times in structuring routines which are time dependent. For example, video game programs rely upon the normal execution cycle times for the microprocessor in generating time intervals which are necessary for the program to perform its various functions. Running the program at higher instruction execution speeds change the resulting time intervals and thereby render the program non-functional. Application programs which are not dependent upon the execution speed typically can be run at these higher execution speeds and obtain the same results.
It is undeniable that providing a personal computer capable of executing application programs written for a slower microprocessor in half the time would be of a commercial advantage in the marketplace, but such a device would not be competitive unless it were able to execute all the application programs written for that slow speed microprocessor. For example, it is possible to provide a personal computer having an Intel 8086, 8087 microprocessor pair (a high speed microprocessor) rather than an 8088, 8087 microprocessor pair (a slow speed microprocessor) and run the high speed microprocessor at two different clocking frequencies, one for a high speed mode for those application programs which can run at the high speed and one for a slow speed mode for those application programs which are time dependent. Unfortunately, this simple clocking change does not result in a personal computer which is software compatible for all varieties of application programs.
Even though the two microprocessor chip sets, the 8086, 8088 are software compatible, the internal design of the microprocessors are not the same. This difference in internal design, depending upon the design of the application program, i.e., does it contain a lot of program jumps, affects the execution speed of a given application program. The execution time at the high speed for the high speed microprocessor is not necessarily proportionally faster than the execution time when the microprocessor clock is set to the slower normal frequency for the slow speed microprocessor. Stated differently, reducing the microprocessor clock from its high speed mode to the normal clock for the slow speed microprocessor while keeping all else the same does not result in the same execution time for a given application program to run on the high speed microprocessor as occurs if the same program is run on the slow speed microprocessor.
For the Intel 8086 microprocessor, simply reducing the clocking frequency to the normal frequency of the 8088 microprocessor results in an execution speed which is faster than it would have been for the slow speed 8088 microprocessor chip. This faster execution speed results from the internal design difference which exists between the two microprocessors, and the fact that the 8086 requires 16-bit fetches from memory while the 8088 requires 8-bit byte fetches.
The internal design difference between these two microprocessors is primarily in the amount of pre-fetch buffer memory provided in the microprocessor. In the Intel 8088, there is four bytes of pre-fetch queue while in the 8086, there is six bytes of pre-fetch queue. Each microprocessor is designed to keep its pre-fetch queue full with information in order that the microprocessor can continue to execute code, which on the average, achieves a desired execution throughput rate. When program jumps occur, the contents of the pre-fetch buffer are lost. This loss of information is reflected in wasted execution time because of the time required to obtain the pre-fetch information that is thrown away. Thus, the 8088 microprocessor, having four bytes of pre-fetch queue running at a given clocking frequency and fetching 8-bit bytes per fetch cycle would produce a different execution throughput than the 8086, having six bytes of pre-fetch queue running at the same clocking frequency but fetching 16-bit bytes per fetch cycle. It is because of this difference in the pre-fetch buffer capacity and the rate at which 8-bit bytes are fetched from memory that the 8086 runs at a faster speed for the same application program when the 8086 microprocessor is run at the same clocking frequency as is normally used for the 8088.
Therefore, it would be advantageous to provide a personal computer which provides for a high speed microprocessor to execute application programs which are not time dependent at high speeds, but providing a lower normal speed execution of those application programs which are time dependent so that the time dependent application programs appear to be running at substantially the same execution speed as they would have run on the microprocessor for which they were written.